import request from "@/utils/request";

// ========== 类型定义 ==========

/** 日期范围查询参数 */
export interface DateRangeQuery {
  /** 开始日期 */
  startDate?: string; // 格式：YYYY-MM-DD
  /** 结束日期 */
  endDate?: string;   // 格式：YYYY-MM-DD
}

/** 头部实时信息VO */
export interface DashboardHeaderInfoVO {
  /** 当前在线用户数 */
  onlineUsers: number;
  /** 在线用户增长率(%) */
  onlineGrowth: number;
  /** 销售进度百分比 */
  salesProgress: number;
  /** 店铺数量 */
  storeCount: number;
  /** 店铺状态 */
  storeStatus: string;
  /** 最后更新时间 */
  lastUpdateTime: string;
}

/** KPI核心指标VO */
export interface KPIMetricsVO {
  /** 今日GMV */
  todayGMV: number;
  /** GMV增长率(%) */
  gmvGrowth: number;
  /** 销售目标达成率(%) */
  targetAchievement: number;
  /** 目标增长率(%) */
  targetGrowth: number;
  /** 月度销售目标 */
  monthlyTarget: number;
  /** 今日订单量 */
  todayOrders: number;
  /** 昨日订单量 */
  yesterdayOrders: number;
  /** 订单增长率(%) */
  ordersGrowth: number;
  /** 转化率(%) */
  conversionRate: number;
  /** 转化率变化(%) */
  conversionChange: number;
  /** 平均转化率(%) */
  avgConversionRate: number;
}

/** 详细指标数据VO */
export interface DetailMetricsVO {
  /** 客单价 */
  unitPrice: number;
  /** 客单价增长率(%) */
  unitPriceGrowth: number;
  /** 访客数 */
  visitors: number;
  /** 访客增长率(%) */
  visitorsGrowth: number;
  /** 成交用户数 */
  buyers: number;
  /** 成交用户增长率(%) */
  buyersGrowth: number;
  /** 商品浏览量(K) */
  productViews: number;
  /** 商品浏览增长率(%) */
  productViewsGrowth: number;
  /** 店铺关注数 */
  storeFollows: number;
  /** 店铺关注增长率(%) */
  storeFollowsGrowth: number;
  /** 退款率(%) */
  refundRate: number;
  /** 退款率变化(%) */
  refundRateChange: number;
}

/** 销售趋势数据点 */
export interface SalesTrendPoint {
  /** 日期 */
  date: string;
  /** GMV(万元) */
  gmv: number;
  /** 订单量 */
  orders: number;
}

/** 销售趋势汇总信息 */
export interface SalesTrendSummary {
  /** 总GMV */
  totalGMV: number;
  /** 总订单数 */
  totalOrders: number;
  /** 日均GMV */
  avgDailyGMV: number;
  /** 增长率(%) */
  growthRate: number;
}

/** 销售趋势响应VO */
export interface SalesTrendResponseVO {
  /** 趋势数据 */
  data: SalesTrendPoint[];
  /** 总计信息 */
  summary: SalesTrendSummary;
}

/** 品类销售数据 */
export interface CategorySalesData {
  /** 品类名称 */
  name: string;
  /** 销售占比(%) */
  value: number;
  /** 销售金额 */
  amount: number;
  /** 颜色 */
  color: string;
}

/** 品类销售汇总信息 */
export interface CategorySalesSummary {
  /** 总销售额 */
  totalAmount: number;
  /** 品类数量 */
  categoryCount: number;
  /** 顶级品类 */
  topCategory: string;
}

/** 品类销售响应VO */
export interface CategorySalesResponseVO {
  /** 品类数据 */
  data: CategorySalesData[];
  /** 总计信息 */
  summary: CategorySalesSummary;
}

/** 看板完整数据VO */
export interface DashboardAllDataVO {
  /** 头部实时信息 */
  headerInfo: DashboardHeaderInfoVO;
  /** KPI核心指标 */
  kpiMetrics: KPIMetricsVO;
  /** 详细指标数据 */
  detailMetrics: DetailMetricsVO;
  /** 销售趋势数据 */
  salesTrend: SalesTrendResponseVO;
  /** 品类销售数据 */
  categorySales: CategorySalesResponseVO;
}

/** 实时数据VO */
export interface RealTimeDataVO {
  /** 在线用户数 */
  onlineUsers: number;
  /** 今日GMV */
  todayGMV: number;
  /** 今日订单量 */
  todayOrders: number;
  /** 实时访客数 */
  realtimeVisitors: number;
  /** 当前转化率(%) */
  currentConversionRate: number;
  /** 最后更新时间 */
  lastUpdateTime: string;
  /** 数据刷新状态 */
  refreshStatus: string;
}

// ========== API配置 ==========

const TP_DASHBOARD_BASE_URL = "/api/tp-dashboard";

const TPDashboardAPI = {
  /** 获取头部实时信息 */
  getHeaderInfo() {
    return request<any, DashboardHeaderInfoVO>({
      url: `${TP_DASHBOARD_BASE_URL}/header-info`,
      method: "get",
    });
  },

  /** 获取KPI核心指标 */
  getKPIMetrics(queryParams?: DateRangeQuery) {
    return request<any, KPIMetricsVO>({
      url: `${TP_DASHBOARD_BASE_URL}/kpi-metrics`,
      method: "get",
      params: queryParams,
    });
  },

  /** 获取详细指标数据 */
  getDetailMetrics(queryParams?: DateRangeQuery) {
    return request<any, DetailMetricsVO>({
      url: `${TP_DASHBOARD_BASE_URL}/detail-metrics`,
      method: "get",
      params: queryParams,
    });
  },

  /** 获取销售趋势数据 */
  getSalesTrend(queryParams?: DateRangeQuery) {
    return request<any, SalesTrendResponseVO>({
      url: `${TP_DASHBOARD_BASE_URL}/sales-trend`,
      method: "get",
      params: queryParams,
    });
  },

  /** 获取品类销售占比数据 */
  getCategorySales(queryParams?: DateRangeQuery) {
    return request<any, CategorySalesResponseVO>({
      url: `${TP_DASHBOARD_BASE_URL}/category-sales`,
      method: "get",
      params: queryParams,
    });
  },

  /** 获取看板完整数据 */
  getAllData(queryParams?: DateRangeQuery) {
    return request<any, DashboardAllDataVO>({
      url: `${TP_DASHBOARD_BASE_URL}/all-data`,
      method: "get",
      params: queryParams,
    });
  },

  /** 刷新实时数据 */
  refreshRealTimeData() {
    return request<any, RealTimeDataVO>({
      url: `${TP_DASHBOARD_BASE_URL}/refresh-realtime`,
      method: "post",
    });
  },

  /**
   * 检查后端API是否可用
   */
  async checkApiHealth(): Promise<boolean> {
    try {
      await request({
        url: `${TP_DASHBOARD_BASE_URL}/header-info`,
        method: "get",
        timeout: 3000
      });
      return true;
    } catch (error) {
      console.warn('后端API不可用，将使用模拟数据模式');
      return false;
    }
  }
};

export default TPDashboardAPI; 